This invention relates to data storage drives of an automated data storage library which stores portable data storage cartridges in storage shelves and transports the portable data storage cartridges between the storage shelves and the data storage drives for mounting and demounting the portable data storage cartridges at the data storage drives, and, more particularly, to the allocation of those data storage drives.
Automated data storage libraries are increasingly employed for storage of large quantities of data, typically data that is infrequently accessed by the host applications. The data is stored on portable data storage cartridges which are stored in storage shelves. Examples of portable data storage cartridges are cartridges containing a length of magnetic tape or containing an optical disk.
When the data is accessed by the library, an accessor robot operated by a robot control of the library, grips the desired portable data storage cartridge from the storage shelf at which it is stored and transports the portable data-storage cartridge between the storage shelves and data storage drives for mounting and demounting the portable data storage cartridges at the data storage drives, and returning the portable data storage cartridge to the same or a different storage shelf.
Automated data storage libraries are sometimes arranged so that, even in the presence of multiple host applications, the library and its data storage drives appear to each host application as its own library and drives. In one example, a specific set of storage shelves and at least one data storage drive of the library is dedicated to each host application. Upon a request for data from the host application, the portable data storage cartridge having the requesting data is accessed by the accessor robot of the library, and delivered to a data storage drive dedicated to the host application for use by the host application. The host application can thus conduct a series of mounts on a known drive. This is very efficient from the standpoint of the host, since its drive is always available, and the drive addressing is direct and immediate. The library may also appear to be directly assigned to the host application, but the accessor robot is actually shared. It is less efficient from the standpoint of the drive usage in that, if each of the host applications is not constantly using its dedicated data storage drive(s), the drives are often idle. Since the drives are assigned to different host applications, any host application that is particularly active is unable to xe2x80x9cborrowxe2x80x9d drives from another host application, and, for example, if all of the assigned drives are utilized and data on a different cartridge is needed, the host application may have to wait until the host application itself demounts one cartridge or releases its drive in order to access data on the other cartridge. Any xe2x80x9cborrowingxe2x80x9d of a drive from another host application would require reconfiguring at least the device drivers for both host applications. Should a host application grow in its needs, new drives cannot be assigned to that host application without reconfiguring at least the host application.
In another example, the host applications are not allowed direct communication with a data storage drive. Rather, a xe2x80x9cvirtualxe2x80x9d library is established which employs cache storage (typically disk drives) to store data received from host applications, acting as though the cache storage is a data storage drive and is writing the data to portable data storage cartridge. The data may be reaccessed while in the cache, called a xe2x80x9ccache hitxe2x80x9d. If not reaccessed, the library downloads the data from the cache storage to a cartridge employing a data storage drive selected by the library. When data is requested by the host application, and it is not in cache, called a xe2x80x9ccache missxe2x80x9d, the library employs a table to find the cartridge storing the data, operates the accessor robot to access the cartridge, finds an available data storage drive, operates the accessor robot to mount the cartridge on the drive, reads the data from the cartridge and uploads the data to cache. From the standpoint of the library, the usage of the library components is efficient. However, cache storage is expensive and adds cost and complexity. The cache storage must be sufficiently large to handle large data sets and must have good staging and destaging algorithms to avoid excessive xe2x80x9ccache missxe2x80x9d situations. The host applications communicate with the cache rather than directly with a drive, and any host application can contend for use of shared components, leading to less predictable performance.
An object of the present invention is to provide an automated data storage library system which employs shared components in an efficient manner.
Another object of the present invention is to allow expanding host applications or the library to receive the benefit of additional drives without requiring reconfiguration of the host applications or the library.
An allocation system and computer implemented method are provided for allocating physical data storage drives of an automated data storage library. The library stores a plurality of portable data storage cartridges in storage shelves, and an accessor robot transports the portable data storage cartridges between the storage shelves and the data storage drives for mounting and demounting the portable data storage cartridges at the data storage drives.
The allocation system comprises a drive resource provider coupled to, or of, the library, responsive to the requests for data storage drives, e.g., from host application(s). The drive resource provider assigns a plurality of the library physical data storage drives to a pool, and allocates and deallocates the data storage drives from the pool for the benefit of the host applications, in accordance with the copending ""00038-US1 application.
In accordance with the present invention, the drive resource provider, upon receiving a request for a data storage drive when all of the data storage drives of the pool are allocated, indicates to the library to hold any mount of a portable data storage cartridge relative to the request. Additionally, a drive image provider, upon receiving the request when all of the drives are allocated, provides an indication that the requested drive is currently unavailable to complete any subsequent command requiring a mounted portable data storage cartridge. As discussed in the copending ""00038-US1 application, the response may comprise a fake completion response called therein xe2x80x9cnot readyxe2x80x9d. Thus, the host application is assured that it has a data storage drive, and, if needed, can retry or issue its next command relative to the drive. If the next command does not require that the drive be ready or that portable data storage cartridge be mounted and ready, the library may be able to handle the command immediately.
The drive resource provider, subsequent to providing the indications, awaits a request for deallocation of a data storage drive and demount of any portable data storage cartridge at the deallocated data storage drive, and allocates the deallocated data storage drive to the request for a drive, and indicates to the library to release the hold of the mount relative to the request.
The drive resource provider additionally assigns at least one of the plurality of library data storage drives as spare drives, outside of the pool. Then, the drive resource provider, subsequent to providing the indications, allocates one of the at least one spare drives to the request, and indicates to the library to release the hold of the mount relative to the request.
The drive resource provider, in an alternative embodiment, waits a predetermined time period, and, if during the predetermined time period a request for deallocation of a data storage drive and demount of any portable data storage cartridge at the deallocated data storage drive occurs, allocates the deallocated data storage drive to the request; else, subsequent to expiration of the time period, the drive resource provider allocates the spare data storage drive to the request.
As still another embodiment, the library comprises a plurality of virtual libraries, and at least one of the plurality of virtual libraries has a higher priority than other of the virtual libraries. The drive resource provider determines the priority of the virtual library of the virtual drive request, and, if the virtual library is of the higher priority, allocates the spare drive in response to the request, and indicates to the library to release the hold of the mount relative to the request.
In a further embodiment, the use of spare drives is limited. The drive resource provider increments a count each instance the request is received when all of the data storage drives of the pool are allocated. The drive resource provider compares the incremented count to a predetermined limit, and, upon the incremented count being less than the predetermined limit, allocates the spare data storage drive.
As a still further embodiment, the drive resource provider additionally, subsequent to the allocation of the spare data storage drive, posts a message indicating use of the spare data storage drive. The posted message, in one embodiment, comprises a notification to a system operator that action may be taken to transfer a spare data storage drive to the pool. As an example, transferring a spare drive to the pool will result in an increased cost for the library. If the transfer is made, the drive resource provider adds the spare data storage drive to the pool, deleting the drive as a spare data storage drive.
In another embodiment, as an incentive, the posted message additionally comprises a notification that failure to transfer the spare drive to the pool will result in future unavailability of spare data storage drives, and the drive resource provider, upon absence of a request to transfer at least one spare data storage drive to the pool, deletes the assignment of at least one of the plurality of library data storage drives as spare drives, such that the assigned spare drives become unassigned.
As the result, the host application is allocated a drive as soon as a drive is deallocated, or is allocated a spare drive. Additionally, if needed, the system is provided with spare drives, and as the system requirements grow, the system operator is allowed to selectively increase the number of data storage drives in the pool by permanently adding spare drives to the pool, without a requirement to first contact a salesperson.
For a fuller understanding of the present invention, reference should be made to the following detailed description taken in conjunction with the accompanying drawings.